home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Everything For A Hacker
/
19990506-[HACK].iso
/
SECURE
/
CRYPT
/
GOST.ZIP
/
SIMPLE~.ASM
< prev
next >
Wrap
Assembly Source File
|
1998-03-07
|
4KB
|
112 lines
;------------------------------------------------------
; ÿ¿Σα«óá¡¿Ñ ¼áßß¿óá ñá¡¡δσ ó αѪ¿¼Ñ »α«ßΓ«⌐ ºá¼Ñ¡δ
; ß«ú½áß¡« ¬α¿»Γ«á½ú«α¿Γ¼π âÄæÆ 28147-89.
; --------> ñ½∩ 32-í¿Γ«óδσ »α«µÑßß«α«ó 80x86 <---------
; Éáºαáí«Γá½ é¿¡«¬πα«ó Ç.₧., ú.î«ß¬óá, 1992-1995 ú.
; (c) 1992-1995, æó«í«ñ¡«Ñ ¬«»¿α«óá¡¿Ñ ¿ ¿ß»«½∞º«óá¡¿Ñ.
;------------------------------------------------------
; Åáαá¼ÑΓαδ »α¿ ó맮óÑ »ÑαÑñáεΓß∩ ó ßΓφ¬Ñ :
; æ¼ÑΘÑ¡¿Ñ ÉẼÑα Å Ç É Ç î à Æ É
; NEAR FAR
; 2 4 4 FAR-áñαÑß ¬½ετá (è)
; 6 8 4 FAR-áñαÑß «í½áßΓ¿ ¡áº¡áτÑ¡¿∩ (ì)
; 10 12 4 FAR-áñαÑß Γáí½¿µδ ºá¼Ñ¡ (Æç)
; 14 16 2 τ¿ß½« Φ¿ΣαπѼδσ 8-íá⌐Γ«óδσ í½«¬«ó
;*16 18 2 ñ½¿¡á ¬½ετá ó ñó«⌐¡δσ ß½«óáσ
; (ß¼. óáα¿á¡Γδ ¬«ñ¿α«óá¡¿∩)
;------------------------------------------------------
; ç¡áτÑ¡¿∩ »áαá¼ÑΓα«ó »α¿ óδσ«ñÑ:
; - áñαÑß «í½áßΓ¿ ¡áº¡áτÑ¡¿∩ π¬áºδóδÑΓ ¡á »Ñαóδ⌐ íá⌐Γ
; »«ß½Ñ »«ß½Ññ¡Ñú« «íαáí«Γá¡¡«ú« í½«¬á;
; - áñαÑßá ¬½ετá ¿ Γáí½¿µδ ºá¼Ñ¡ ¡Ñ ¿º¼Ñ¡¿½¿ß∞;
; - ßτÑΓτ¿¬ Φ¿ΣαπѼδσ í½«¬«ó αáóÑ¡ 0;
;------------------------------------------------------
; êß»«½∞ºπѼδÑ αÑú¿ßΓαδ : óßÑ
;------------------------------------------------------
; çá¼Ñτá¡¿∩:
; 1.çáΦ¿Σα«óá¡¿Ñ ¿½¿ αáßΦ¿Σα«óá¡¿Ñ ºáñáÑΓß∩ »ÑαÑñáτÑ⌐
; ß««ΓóÑΓßΓóπεΘÑú« áñαÑßá ¬½ετá - »«α∩ñ«¬ φ½Ñ¼Ñ¡Γ«ó
; ó ¬½ετáσ ºáΦ¿Σα«óá¡¿∩ ¿ αáßΦ¿Σα«óá¡¿∩ óºá¿¼¡«
; «íαáΓ¡δ⌐.
; 2.æ«ú½áß¡« âÄæÆ 28147-89 φëà ¼«ñπ½∞ ¼«ªÑΓ ¿ß»«½∞-
; º«óáΓ∞ß∩ Γ«½∞¬« ñ½∩ Φ¿Σα«óá¡¿∩ ¬½ετÑó«⌐ ¿¡Σ«α¼áµ¿¿
; (¿ ß¿¡σα«»«ß佬¿ ñ½∩ úá¼¼¿α«óá¡¿∩).
;------------------------------------------------------
; éáα¿á¡Γδ ¬«ñ¿α«óá¡¿∩
; - æ¿¼ó«½ KeySize:
; -- æ¿¼ó«½ ¡Ñ«»αÑñѽѡ:Σπ¡¬µ¿∩ ¿ß»«½∞ºπÑΓ αáºóÑα¡πΓδ⌐
; ¬½ετ αẼÑα«¼ ó 32 ¬½ετÑóδσ φ½Ñ¼Ñ¡Γá;
; -- æ¿¼ó«½ «»αÑñѽѡ ¿ ¿¼ÑÑΓ τ¿ß½«ó«Ñ º¡áτÑ¡¿Ñ:
; Σπ¡¬µ¿∩ ¿ß»«½∞ºπÑΓ ¬½ετ π¬áºá¡¡«ú« αẼÑαá (ó
; ¬½ετÑóδσ φ½Ñ¼Ñ¡Γáσ);
; -- æ¿¼ó«½ «»αÑñѽѡ, ¿¼ÑÑΓ »πßΓ«Ñ º¡áτÑ¡¿Ñ:
; αẼÑα ¬½ετá »ÑαÑñáÑΓß∩ ¬á¬ »«ß½Ññ¡¿⌐ »áαá¼ÑΓα
; Σπ¡¬µ¿¿.
;------------------------------------------------------
;
wptr EQU <word ptr>
IFNDEF KeySize
_keysize EQU 32 ; φ½Ñ¼Ñ¡Γ«ó ó ¬½ετÑ
ELSE
IFDIF KeySize,<>
_keysize EQU KeySize ; φ½Ñ¼Ñ¡Γ«ó ó ¬½ετÑ
ENDIF
ENDIF
;
.model small,C
.code $gost
.386
extrn gost386:near
simple proc
public simple
; óδτ¿ß½∩Ѽ ß¼ÑΘÑ¡¿Ñ »áαá¼ÑΓα«ó ó ßΓφ¬Ñ
a=10 ; 2+1+1+1 ß½«ó ó ßΓφ¬Ñ
IF (TYPE simple) EQ 0FFFEh
a=a+2 ; Ñß½¿ simple - far-»α«µÑñπαá
ENDIF
; çáñáѼ ß¼ÑΘÑ¡¿Ñ áαúπ¼Ñ¡Γ«ó ó ßΓφ¬Ñ
;
key= 2+a ; ß¼ÑΘÑ¡¿Ñ áñαÑßá ¬½ετá
syn= 6+a ; ß¼ÑΘÑ¡¿Ñ áñαÑßá ñá¡¡δσ
chg= 10+a ; ß¼ÑΘÑ¡¿Ñ áñαÑßá Γáí½. ºá¼Ñ¡
len= 14+a ; ß¼ÑΘÑ¡¿Ñ ßτÑΓτ¿¬á í½«¬«ó
IFNDEF _keysize
keylen= 16+a
ENDIF
;
; æ«σαá¡Ñ¡¿Ñ αÑú¿ßΓα«ó »« ß«ú½áΦÑ¡¿∩¼ Turbo C
push EBP
push DS
push SI
push DI
; ìáτá½∞¡á∩ ºáúαπº¬á π¬áºáΓѽÑ⌐
mov ES,key+2[ESP] ; ES <- ßÑú¼Ñ¡Γ ¬½ετá
lds BX,chg[ESP] ; DS:BX <- áñαÑß Æç
lfs DI,syn[ESP] ; FS <- ßÑú¼Ñ¡Γ ¡áº¡.
; çáúαπº¬á í½«¬á ñá¡¡δσ
circle: mov EAX,FS:[DI] ; EAX <- S1
mov EDX,FS:4[DI] ; EDX <- S2
; é맮ó »α«ßΓ«⌐ ºá¼Ñ¡δ;
IFDEF _keysize
mov CX,_keysize ; CX <- τ¿ß½« «ß¡«ó¡. Φáú«ó
ELSE
mov CX,keylen[ESP] ; CX <- τ¿ß½« «ß¡«ó¡. Φáú«ó
ENDIF
mov SI,key[ESP] ; ES:SI <- áñαÑß ¬½ετá
call gost386 ; <Φáú »α«ßΓ«⌐ ºá¼Ñ¡δ>
; çỿß∞ αѺπ½∞ΓáΓá ¡á ¼ÑßΓ«
mov FS:4[DI],EAX ; çá¡«ß¿¼ αѺπ½∞ΓáΓ
mov FS:[DI],EDX ; ¡á Ñú« ¼ÑßΓ«
; Äαúá¡¿ºáµ¿∩ µ¿¬½á
add DI,8 ; ¬«ααѬµ¿∩ áñαÑßá ¡áº¡.
dec wptr len[ESP] ; ¬«ααѬµ¿∩ ßτÑΓτ¿¬á í.
jnz circle ; µ¿¬½¿¼ß∩
; é«ßßΓá¡«ó½Ñ¡¿Ñ αÑú¿ßΓα«ó ¿º ßΓφ¬á
pop DI
pop SI
pop DS
pop EBP
ret
simple endp
end